<script setup lang="js">
import { read, utils, writeFile } from 'xlsx'
import data from './data'

function handleChange(options) {
  const file = options.fileList[0]
  const fileRender = new FileReader()
  fileRender.onload = function (ev) {
    const workbook = read(ev.target?.result, { type: 'binary' })
    const name = workbook.SheetNames[0]
    console.log(workbook.Sheets[name])
    const header = ['no', 'key', 'nickName', 'name', 'phone', 'card', 'sex', 'accommodation', 'city', 'regNo', 'isAuto', 'cohabitantName', 'cohabitantSex', 'cohabitantPhone', 'cohabitantNo', 'submitStatus', 'remarks', 'submitTime', 'updateTime']
    const result = utils.sheet_to_json(workbook.Sheets[name], { header, blankrows: false })
  }

  fileRender.readAsArrayBuffer(file.file)
}

// const days = ['10.31号（1号中午退房）', '11.1号（2号中午退房）', '11.2号（3号中午退房）', '11.3号（4号中午退房）']

function formatData(rows) {
  // rows = rows.filter((item, index) => index > 1 && item.key)

  // 重名标记
  const allNames = []

  rows = rows.map((item) => {
    let nameList = []
    item.filg = '成功'
    item.error = ''
    // let noList = []
    // 清洗姓名
    if (item.cohabitantName) {
      const newName = item.cohabitantName.replace(/((\d号)|[\d\-,，、])/g, ' ').replace(/\s+/g, ' ').trim()
      if (newName.length > 0 && newName !== '无' && newName !== '没人同住' && newName !== '没有同住' && !newName.includes('帮助安排')) {
        nameList = newName.split(' ')
      }
    }
    item.personCount = 1 + nameList.length

    if (allNames.includes(item.name)) {
      item.filg = '失败'
      item.error += `${item.name} 重名核对；`
    }
    else {
      allNames.push(item.name)
    }
    nameList.forEach((name) => {
      if (allNames.includes(name)) {
        item.filg = '失败'
        item.error += `${name} 重名核对；`
      }
      else {
        allNames.push(name)
      }
    })
    // 清洗序号
    // if (item.cohabitantNo) {
    //   const newNo = item.cohabitantNo.replace(/[\u4E00-\u9FA5]/g, '').replace(/([\-,，、])/g, ' ').replace(/\s+/g, ' ').trim()
    //   if (newNo.length > 0) {
    //     noList = newNo.split(' ')
    //   }
    // }
    // if (nameList.length !== noList.length) {
    //   item.filg = false
    //   item.error = '同住人姓名和同住人序号数量不匹配，需人工核对'
    // }

    // console.log(newNoList)
    return item
  })
  // 按性别拆分数据

  // 自定义下载的header，注意是数组中的数组哦
  // const header = [['序号唯一编号', '昵称', '姓名（与报名时一致）', '手机号', '身份证号', '性别', '住宿情况（多选）', '来自哪个城市', '报名道德经序号', '是否自驾出行', '同住人姓名', '同住人性别（选填）', '同住人手机号（选填）', '同住人报名道德经序号', '提交状态', '备注说明', '提交时间', '更新时间', '清洗结果', '错误信息', '总人数']]
  // const headerWs = utils.aoa_to_sheet(header)
  // const ws = utils.sheet_add_json(headerWs, rows, { skipHeader: true, origin: 'A2' })
  // /* 新建空workbook，然后加入worksheet */
  // const wb = utils.book_new()
  // // 可以自定义下载之后的sheetname
  // utils.book_append_sheet(wb, ws, 'sheetName')
  // /* 生成xlsx文件 */
  // writeFile(wb, '下载.xlsx')

  // rows.forEach((item) => {
  //   console.log(`填报人： ${item.name}   房间人数：${item.personCount}`)
  // })
}

onMounted(() => {
  console.log(formatData(data))
})
</script>

<template>
  <div>
    <n-upload
      :default-upload="false"
      @change="handleChange"
    >
      <n-button>上传文件</n-button>
    </n-upload>
    <n-button @click="formatData(data)">
      点击
    </n-button>
  </div>
</template>
